<?php
class lib_cache
{
    private $cache_path;            //path for the cache
    private $cache_expire;          //seconds that the cache expires

    //cache constructor, optional expiring time and cache path
    public function Cache($exp_time = 3600, $path = "cache/"){
        $this->cache_expire = $exp_time;
        $this->cache_path = $path;
    }


    //returns the filename for the cache
    private function fileName($key){
        return $this->cache_path . md5($key);

    }
    //creates new cache files with the given data, $key== name of the cache, data the info/values to store
    public function put($key, $data){

        $values = serialize($data);
        $filename = $this->fileName($key);
        $file = fopen($filename, 'w');
        if ($file) {//able to create the file
            fwrite($file, $values);
            fclose($file);
        } else return false;
    }


    //returns cache for the given key

    public function get($key){
        $filename = $this->fileName($key);
        if (!file_exists($filename) || !is_readable($filename)) {               //can't read the cache
            return false;
        }
        if (time() < (filemtime($filename) + $this->cache_expire)) {//cache for the key not expired
            $file = fopen($filename, "r");// read data file
            if ($file) {//able to open the file
                $data = fread($file, filesize($filename));
                fclose($file);
                return unserialize($data);//return the values
            } else return false;
        } else return false;//was expired you need to create new
    }

}

?>